home *** CD-ROM | disk | FTP | other *** search
/ Grand Slam 3 / Grand Slam 3.iso / 026 / imphob10.arj / IMP10_EX.ARJ / W_GEMMIS.ARJ / GEMMIS.DOC < prev    next >
Text File  |  1995-05-15  |  23KB  |  560 lines

  1. --------W-2F1600-----------------------------
  2. INT 2F - MS Windows - WINDOWS ENHANCED MODE INSTALLATION CHECK
  3.     AX = 1600h
  4. Return: AL = status
  5.         00h neither Windows 3.x enhanced mode nor Windows/386 2.x running
  6.         01h Windows/386 2.x running
  7.         80h XMS version 1 driver installed (neither Windows 3.x enhanced
  8.          mode nor Windows/386 2.x running) (obsolete--see note)
  9.         FFh Windows/386 2.x running
  10.     AL = anything else
  11.         AL = Windows major version number >= 3
  12.         AH = Windows minor version number
  13. Notes:    INT 2F/AH=16h comprises an API for non-Windows programs (DOS device
  14.       drivers, TSRs, and applications) to cooperate with multitasking
  15.       Windows/386 2.x and Windows 3.x and higher enhanced mode.
  16.     certain calls are also supported in the Microsoft 80286 DOS extender in
  17.       Windows standard mode
  18.     this function served as the installation check and AX=1610h served to
  19.       get the driver entry point for XMS version 1, which is now obsolete.
  20.       Use AX=4300h and AX=4310h instead
  21. SeeAlso: AX=160Ah,AX=1610h,AX=4300h,AX=4680h
  22. Index:    installation check;XMS version 1
  23. --------W-2F1602-----------------------------
  24. INT 2F - MS Windows/386 2.x - GET API ENTRY POINT
  25.     AX = 1602h
  26. Return: ES:DI -> Windows/386 2.x API procedure entry point
  27. Notes:    this interface is supported in Windows 3.x only for 2.x compatibility
  28.     to get the current virtual machine (VM) ID in Windows/386 2.x:
  29.         AX = 0000h
  30.         ES:DI -> return address
  31.         JUMP to address returned from INT 2F/AX=1602h
  32.     After JUMP, at return address:
  33.         BX = current VM ID.
  34. SeeAlso: AX=C020h
  35. --------W-2F1603-----------------------------
  36. INT 2F - MS Windows/386 - GET INSTANCE DATA
  37.     AX = 1603h
  38. Return: AX = 5248h ('RH') if supported
  39.         DS:SI -> Windows/386 instance data (see below)
  40. Notes:    reportedly supported by RM Nimbus MS-DOS 3.3 kernel
  41.     this function is called by DOSMGR when AX=1607h/BX=0015h is not
  42.       supported, as is the case in DOS versions prior to 5.0
  43.     see Geoff Chappell's book _DOS_Internals_ for additional discussions of
  44.       this function, DOSMGR's behavior, and instancing in general
  45. SeeAlso: AX=1607h/BX=0015h
  46.  
  47. Format of Windows/386 instance data:
  48. Offset    Size    Description
  49.  00h    WORD    segment of IO.SYS (0000h = default 0070h)
  50.  02h    WORD    offset in IO.SYS of STACKS data structure (DOS 3.2x)
  51.         0000h if not applicable
  52.  04h    WORD    number of instance data entries (max 32)
  53.  06h    Array of instance data entries
  54.     Offset    Size    Description
  55.      00h    WORD    segment (0002h = DOS kernel)
  56.      02h    WORD    offset
  57.      04h    WORD    size
  58. --------W-2F1605-----------------------------
  59. INT 2F - MS Windows - WINDOWS ENH MODE & 286 DOSX INIT BROADCAST
  60.     AX = 1605h
  61.     ES:BX = 0000h:0000h
  62.     DS:SI = 0000h:0000h
  63.     CX = 0000h
  64.     DX = flags
  65.         bit 0 = 0 if Windows enhanced-mode initialization
  66.         bit 0 = 1 if Microsoft 286 DOS extender initialization
  67.         bits 1-15 reserved (undefined)
  68.     DI = version number (major in upper byte, minor in lower)
  69. Return: CX = 0000h if okay for Windows to load
  70.     CX = FFFFh (other registers unchanged) if Windows 3.0 in standard mode
  71.     CX <> 0 if Windows should not load
  72.     ES:BX -> startup info structure (see below)
  73.     DS:SI -> virtual86 mode enable/disable callback or 0000h:0000h
  74. Notes:    the Windows enhanced mode loader and Microsoft 286 DOS extender will
  75.       broadcast an INT 2F/AX=1605h call when initializing.    Any DOS device
  76.       driver or TSR can watch for this broadcast and return the appropriate
  77.       values.  If the driver or TSR returns CX <> 0, it is also its
  78.       responsibility to display an error message.
  79.     each handler must first chain to the prior INT 2F handler with
  80.       registers unchanged before processing the call
  81.     if the handler requires local data on a per-VM basis, it must store the
  82.       returned ES:BX in the "next" field of a startup info structure and
  83.       return a pointer to that structure in ES:BX
  84.     a single TSR may set the V86 mode enable/disable callback; if DS:SI is
  85.       already nonzero, the TSR must fail the initialization by setting CX
  86.       nonzero
  87.     MSD checks for Windows 3.0 running in standard mode by testing whether
  88.       CX=FFFFh and other registers are unchanged on return
  89. SeeAlso: AX=1606h,AX=1608h,AX=4B05h
  90.  
  91. Format of Startup Information Structure:
  92. Offset    Size    Description
  93.  00h  2 BYTEs    major, minor version of info structure
  94.  02h    DWORD    pointer to next startup info structure or 0000h:0000h
  95.  06h    DWORD    pointer to ASCIZ name of virtual device file or 0000h:0000h
  96.  0Ah    DWORD    virtual device reference data (see below)
  97.         (only used if above nonzero)
  98.  0Eh    DWORD    pointer to instance data records or 0000h:0000h
  99.  
  100. Format of one Instance Item in array:
  101. Offset    Size    Description
  102.  00h    DWORD    address of instance data (end of array if 0000h:0000h)
  103.  04h    WORD    size of instance data
  104.  
  105. Format of Virtual Device Reference Data:
  106. Offset    Size    Description
  107.  00h    DWORD    physical address of ??? or 00000000h
  108.  04h    DWORD    physical address of ??? table
  109.  08h    DWORD    "DEST_PAGE" address to which pages must be mapped
  110.  0Ch  N DWORDs    "SRC_PAGE" physical addresses of the pages
  111.         00000000h = end of table
  112. Note:    EMM386.EXE sets the first pointer to the start of the device driver
  113.       chain, the second pointer to a field of 40h bytes followed by a
  114.       16-bit offset to the end of the SRC_PAGE table, and DEST_PAGE to
  115.       the start segment of the UMB area
  116.  
  117. Virtual mode enable/disable procedure called with:
  118.     AX = 0000h disable V86 mode
  119.     AX = 0001h enable V86 mode
  120.     interrupts disabled
  121. Return: CF set on error
  122.     CF clear if successful
  123.     interrupts disabled
  124. --------W-2F1606-----------------------------
  125. INT 2F - MS Windows - WINDOWS ENH MODE & 286 DOSX EXIT BROADCAST
  126.     AX = 1606h
  127.     DX = flags
  128.         bit 0 = 0 if Windows enhanced-mode exit
  129.         bit 0 = 1 if Microsoft 286 DOS extender exit
  130.         bits 1-15 reserved (undefined)
  131. Notes:    if the init broadcast fails (AX=1605h returned CX <> 0), then this
  132.       broadcast will be issued immediately.
  133.     this call will be issued in real mode
  134. SeeAlso: AX=1605h,AX=1609h
  135. --------W-2F1607-----------------------------
  136. INT 2F - MS Windows - VIRTUAL DEVICE CALL OUT API
  137.     AX = 1607h
  138.     BX = virtual device ID (see INT 2F/AX=1684h)
  139.     CX = (usually) callout subfunction
  140. Return: (usually) AX,BX,CX,DX,ES contain results
  141. Notes:    more of a convention than an API, this call specifies a standard
  142.       mechanism for Windows enhanced-mode virtual devices (VxD's) to talk
  143.       to DOS device drivers and TSRs
  144.     see below for details on several virtual devices
  145. SeeAlso: AX=1605h,AX=1607h/BX=000Ch,AX=1607h/BX=0014h,AX=1607h/BX=0015h
  146. SeeAlso: AX=1684h,AX=C020h
  147. --------W-2F1607BX0006-----------------------
  148. INT 2F - MS Windows - "V86MMGR" VIRTUAL DEVICE API
  149.     AX = 1607h
  150.     BX = 0006h (VxD identifier of "V86MMGR")
  151.     CX = 0000h
  152. Return: AX = status
  153.         0000h if local A20 state changed
  154.         1607h if A20 unchanged
  155.         other if global A20 state changed
  156. --------W-2F1607BX000C-----------------------
  157. INT 2F - MS Windows - "VMD" VIRTUAL MOUSE DEVICE API
  158.     AX = 1607h
  159.     BX = 000Ch (VxD identifier of "VMD")
  160. Return: CX = nonzero if mouse driver already virtualized
  161. Note:    VMD (Virtual Mouse Driver) calls this and then checks whether CX is
  162.       nonzero; if yes, it will not automatically virtualize the mouse
  163.       driver.  This would be used if MOUSE.COM already virtualizes
  164.       itself using the Windows API.
  165. SeeAlso: AX=1607h/BX=0014h,AX=1607h/BX=0015h
  166. ----------2F1607BX0010-----------------------
  167. INT 2F C - MS Windows 3.1 - "BLOCKDEV" VIRTUAL HARD DISK DEVICE API
  168.     AX = 1607h
  169.     BX = 0010h (VxD identifier of "BLOCKDEV")
  170.     CX = function
  171.         0001h starting FastDisk compatibility tests
  172.         0002h ending FastDisk compatibility tests
  173.         0003h check if FastDisk installation allowed
  174.         Return: CX = 0000h if allowed
  175. Note:    this interface is called by the Windows FastDisk driver (such as
  176.       WDCTRL) when it thinks that the INT 13h handler immediately below
  177.       IO.SYS's INT 13h code is not in ROM; it should be supported by any
  178.       program which hooks itself underneath IO.SYS's INT 13h code with
  179.       INT 2F/AH=13h
  180. SeeAlso: AX=1607h/BX=0014h,INT 2F/AH=13h
  181. --------W-2F1607BX0014-----------------------
  182. INT 2F - MS Windows - "VNETBIOS" VIRTUAL DEVICE API
  183.     AX = 1607h
  184.     BX = 0014h (VxD identifier of "VNETBIOS")
  185. Return: ES:DI -> 128-byte table specifying VNETBIOS actions for each NetBIOS
  186.         command code (see below)
  187. Note:    VNETBIOS (Virtual NetBIOS) calls this function to determine whether
  188.       the NetBIOS has an extensions Windows should know about
  189. SeeAlso: AX=1607h/BX=000Ch,AX=1607h/BX=0010h,AX=1607h/BX=0015h
  190.  
  191. Values for action code:
  192.  00h    "VN_Unknown" unknown command
  193.  04h    "VN_No_Map"  no memory mapping necessary
  194.  08h    "VN_Map_In"  input buffer is quickly used, so no global mapping needed
  195.  0Ch    "VN_Map_In"  output buffer is quickly used, so no global mapping needed
  196.  10h    "VN_Map_In_Out"     buffer is quickly used, so no global mapping needed
  197.  14h    "VN_Chain_Send"     the chain-send command
  198.  18h    "VN_Cancel"    special case for cancel command
  199.  1Ch    "VN_Buffer_In"    buffer is incoming
  200.  20h    "VN_Buffer_Out" buffer is outgoing
  201.  24h    "VN_Buffer_In_Out" buffer used for both incoming and outgoing data
  202. --------D-2F1607BX0015-----------------------
  203. INT 2F C - MS Windows - "DOSMGR" VIRTUAL DEVICE API
  204.     AX = 1607h
  205.     BX = 0015h (VxD identifier of "DOSMGR")
  206.     CX = function
  207.         0000h query instance processing
  208.         DX = 0000h
  209.         Return: CX = state
  210.                 0000h not instanced
  211.                 other instanced (DOS 5+ kernel returns 0001h)
  212.                 DX = segment of DOS drivers or 0000h for
  213.                     default of 0070h
  214.                 ES:BX -> patch table (see below)
  215.         0001h set patches in DOS
  216.         DX = bit mask of patch requests
  217.             bit 0 enable critical sections
  218.             bit 1 NOP setting/checking user ID
  219.             bit 2 turn INT 21/AH=3Fh on STDIN into polling loop
  220.             bit 3 trap stack fault in "SYSINIT" to WIN386
  221.             bit 4 BIOS patch to trap "Insert disk X:" to WIN386
  222.         Return: AX = B97Ch
  223.             BX = bit mask of patches applied
  224.             DX = A2ABh
  225.         0002h remove patches in DOS (ignored by DOS 5.0 kernel)
  226.         DX = bit mask of patch requests (see function 0001h)
  227.         Return: CX = 0000h (DOS 5-6)
  228.         Note:    return values are ignored by DOSMGR in Windows 3.1
  229.         0003h get size of DOS data structures
  230.         DX = bit mask of request (only one bit can be set)
  231.             bit 0: Current Directory Structure size
  232.         Return: if supported request:
  233.                 AX = B97Ch
  234.                 CX = size in bytes of requested structure
  235.                 DX = A2ABh
  236.             else:
  237.                 CX = 0000h
  238.                 all other registers preserved
  239.         0004h determine instanced data structures
  240.         Return: AX = B97Ch if supported
  241.             DX = A2ABh if supported (DOS 5+ kernel returns 0000h)
  242.             BX = bit mask of instanced items
  243.                 bit 0: CDS
  244.                 bit 1: SFT
  245.                 bit 2: device list
  246.                 bit 3: DOS swappable data area
  247.         0005h get device driver size
  248.         ES = segment of device driver
  249.         Return: DX:AX = 0000h:0000h on error (not dev. driver segment)
  250.             DX:AX = A2ABh:B97Ch if successful
  251.                 BX:CX = size of device driver in bytes
  252. Notes:    DOSMGR (DOS Manager) will check whether the OEM DOS/BIOS data has
  253.       been instanced via this API and will not perform its own default
  254.       instancing of the normal DOS/BIOS data if so; if this API is not
  255.       supported, DOSMGR will also try to access instancing data through
  256.       INT 2F/AX=1603h
  257.     these functions are supported by the DOS 5+ kernel; DOSMGR contains
  258.       tables of instancing information for earlier versions of DOS
  259.     see Geoff Chappell's book _DOS_Internals_ for additional discussions of
  260.       DOSMGR's behavior and instancing in general
  261. SeeAlso: AX=1603h,AX=1605h,AX=1607h/BX=000Ch,AX=1607h/BX=0014h,AX=1684h
  262.  
  263. Format of patch table:
  264. Offset    Size    Description
  265.  00h  2 BYTEs    DOS version (major, minor)
  266.  02h    WORD    offset in DOS data segment of "SAVEDS"
  267.  04h    WORD    offset in DOS data segment of "SAVEBX"
  268.  06h    WORD    offset in DOS data segment of InDOS flag
  269.  08h    WORD    offset in DOS data segment of User ID word
  270.  0Ah    WORD    offset in DOS data segment of "CritPatch" table to enable
  271.         critical section calls (see INT 2A/AH=80h)
  272.  0Ch    WORD    (DOS 5+ only) offset in DOS data segment of "UMB_HEAD",
  273.         containing segment of last MCB in conventional memory
  274. --------E-2F1607BX22C0-----------------------
  275. INT 2F - Rational Systems DOS/4GW - ???
  276.     AX = 1607h
  277.     BX = 22C0h
  278.     ???
  279. Return: ???
  280. SeeAlso: INT 15/AX=BF02h,INT 15/AX=BF04h
  281. --------W-2F1608-----------------------------
  282. INT 2F C - MS Windows - WINDOWS ENHANCED MODE INIT COMPLETE BROADCAST
  283.     AX = 1608h
  284. Notes:    called after all installable devices have been initialized
  285.     real-mode software may be called between the Windows enhanced-mode init
  286.       call (AX=1605h) and this call; the software must detect this
  287.       situation
  288. SeeAlso: AX=1605h,AX=1609h
  289. --------W-2F1609-----------------------------
  290. INT 2F C - MS Windows - WINDOWS ENHANCED MODE BEGIN EXIT BROADCAST
  291.     AX = 1609h
  292. Note:    called at the beginning of a normal exit sequence; not made in the
  293.       event of a fatal system crash
  294. SeeAlso: AX=1606h,AX=1608h
  295. --------W-2F160A-----------------------------
  296. INT 2F - MS Windows 3.1 - IDENTIFY WINDOWS VERSION AND TYPE
  297.     AX = 160Ah
  298. Return: AX = 0000h if call supported
  299.         BX = version (BH=major, BL=minor)
  300.         CX = mode (0002h = standard, 0003h = enhanced)
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312. INT 21 U - Memory Managers - GET API ENTRY POINT
  313.     AX = 4402h subfn 00h
  314.     BX = file handle for device "EMMXXXX0"
  315.     CX = 0006h (size of buffer in bytes)
  316.     DS:DX -> buffer for API entry point record (see below)
  317.         first byte must be 00h on entry
  318. Return: CF clear if successful
  319.         buffer filled (see INT 67/AH=3Fh function 1B00h)
  320.     CF set on error
  321.         AX = error code (01h,05h,06h,0Dh) (see AH=59h)
  322. Notes:    this function is supported by Microsoft EMM386.EXE v4.45+ and
  323.       CEMM v5.10+, and is intended for use by MS Windows as it starts up
  324.     if no other program has hooked INT 67, an alternate installation
  325.       check for CEMM is testing for the string
  326.       "COMPAQ EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
  327.       handler's segment; if present, the word at offset 12h contains the
  328.       offset of the API entry point
  329. SeeAlso: AX=4402h/SF=01h,AX=4402h/SF=02h,AX=4402h"EMM386",INT 67/AH=3Fh
  330.  
  331. Format of API entry point record:
  332. Offset    Size    Description
  333.  00h    WORD    ??? (0022h for CEMM 5.11, 0025h for MS EMM386 v4.45)
  334.  02h    DWORD    manager's private API entry point (see below,INT 67/AX=FFA5h)
  335.  
  336. Call CEMM v5.10+ entry point with:
  337.     AH = 00h get memory manager's state
  338.         Return: AH = state
  339.             bit 0: turned OFF
  340.             bit 1: AUTO mode enabled
  341.     AH = 01h set memory manager's state
  342.         AL = new state (00h ON, 01h OFF, 02h AUTO)
  343.         Return: CF clear if successful
  344.             CF set on error
  345.     AH = 02h Weitek coprocessor support
  346.         AL = subfunction
  347.         00h get Weitek support state
  348.             Return: AL = status
  349.                 bit 0: Weitek coprocessor is present
  350.                 bit 1: Weitek support is enabled
  351.         01h turn on Weitek support
  352.         02h turn off Weitek support
  353.         Return: CF clear if successful
  354.             CF set on error
  355.             AH = error code (01h invalid subfunc, 02h no Weitek)
  356.     AH = 05h get statistics
  357.         ???
  358.     AH > 06h
  359.         Return: CF set
  360.             AH = 01h (invalid function)
  361. Notes:    AH=03h,04h,06h are NOPs which return CF clear, presumably for backwards
  362.       compatibility with earlier versions of CEMM
  363.     in v5.11, AH=05h merely prints an error message (using INT 21/AH=09h)
  364.       stating that a different version of CEMM is installed and it is
  365.       therefore not possible to display the statistics
  366. --------m-214402SF01-------------------------
  367.  
  368.  
  369. INT 21 U - Memory Managers - GET EMM IMPORT STRUCTURE ADDRESS
  370.     AX = 4402h subfn 01h
  371.     BX = file handle for device "EMMXXXX0"
  372.     CX = 0006h (size of buffer in bytes)
  373.     DS:DX -> buffer for EMM import structure record (see below)
  374.         first byte must be 01h on entry
  375. Return: CF clear if successful
  376.         buffer filled (see INT 67/AH=3Fh function 1B00h)
  377.     CF set on error
  378.         AX = error code (01h,05h,06h,0Dh) (see AH=59h)
  379. Notes:    this function is supported by Microsoft EMM386.EXE v4.45+,
  380.       QEMM-386 v6+, and CEMM v5.10+, and is intended for use by MS Windows
  381.       as it starts up
  382.     for QEMM-386, this call always returns an error if Windows3 support
  383.       has been disabled with the NW3 switch
  384. SeeAlso: AX=4402h/SF=00h,AX=4402h"EMM386",INT 2F/AX=D201h/BX=5145h
  385. SeeAlso: INT 67/AH=3Fh
  386.  
  387. Format of EMM import structure record:
  388. Offset    Size    Description
  389.  00h    DWORD    physical address of EMM import structure
  390.  04h    BYTE    EMM import structure major version
  391.  05h    BYTE    EMM import structure minor version
  392. Note:    version 1.00 contains only EMS information (Windows 3.0+)
  393.     version 1.10 contains UMB/XMS/HMA/EMS information (Windows 3.1)
  394.     version 1.11 is version 1.10 plus memory manager maker/product name
  395.  
  396.  
  397. ; ***************************************************************************
  398. ; ***************************************************************************
  399. ; ***************************************************************************
  400. ; ***************************************************************************
  401. ; ***************************************************************************
  402. ; ***************************************************************************
  403. ; ***************************************************************************
  404.  
  405. Format of Global EMM Import record:
  406. Offset    Size    Description
  407.  00h    BYTE    bit flags
  408.         bit 2: ???
  409.         bit 3: free EMM386 virtual HMA only if hma_page_table_paddr!=0
  410.         bit 4: no UMB???
  411.  01h    BYTE    reserved (0)
  412.  02h    WORD    size of structure in bytes
  413.  04h    WORD    structure version
  414.  06h    DWORD    reserved
  415.  0Ah 384 BYTEs    64 EMS frame status records (see below), one per 16K of
  416.           real-mode 1M address space
  417. 18Ah    BYTE    ??? (must be at least 3*number_of_EMS_frames+4)
  418. 18Bh    BYTE    number of UMB frame descriptors following
  419. 18Ch 4N DWORDs    UMB frame descriptors
  420.         each is 4 DWORDs giving physical page numbers for the four
  421.           4K pages of a 16K EMS frame (00000000h if non-UMB page)
  422. var    BYTE    number of EMS handle info records following
  423.     16N BYTEs    EMS handle info records (see below)
  424.  
  425.  
  426.  
  427. ---version 1.10+ ---
  428.     DWORD    realmode INT 67 vector (used by Windows to set breakpoints)
  429.     DWORD    physical address of HMA page table values
  430.     BYTE    number of free page entries following
  431.      2N DWORDs    free page entries
  432.         each is:
  433.           DWORD    physical page number
  434.           DWORD number of consecutive physical pages
  435.     BYTE    number of XMS handle info records following
  436.         00h if memory manager does not emulate XMS or has real mode
  437.           XMS code which can execute in the Windows environment
  438.     12N BYTEs    XMS handle info records (see below)
  439.     BYTE    number of free UMB info records following
  440.      2N WORDs    free UMB info records
  441.         each is:
  442.           WORD    real mode start segment
  443.           WORD    size in paragraphs
  444.  
  445.  
  446.  
  447. ---version 1.11---
  448.      20 BYTEs    blank-padded maker name
  449.      20 BYTEs    blank-padded product name
  450.  
  451.  
  452. Format of EMS frame status record:
  453. Offset    Size    Description
  454.  00h    BYTE    frame type (see below)
  455.  01h    BYTE    owner handle (00h/FFh = none) from frame including UMB
  456.         index to UMB frame descriptors
  457.  02h    WORD    logical page for frame, 7FFFh if none, FFFFh if non-EMS frame
  458.  04h    BYTE    EMS physical page number (FFh for non-EMS = don't care???)
  459.  05h    BYTE    flags for non-EMS frames (00h for EMS frame)
  460.         bits 0,1 for first 4K, bits 2,3 for second 4K, etc:
  461.           10: direct mapping (linear address = physical address)
  462.           01: UMB mapping
  463.  
  464. Bitfields for EMS frame type:
  465. Bit(s)    Description
  466.  0    EMS frame
  467.  1    (if EMS frame) in standard 64K page frame
  468.  2    first 4K of frame is UMB
  469.  3    second 4K of frame is UMB
  470.  4    third 4K of frame is UMB
  471.  5    last 4K of frame is UMB
  472.  
  473. Format of EMS handle info record:
  474. Offset    Size    Description
  475.  00h    BYTE    handle number (00h = system handle)
  476.  01h    BYTE    flags
  477.         bit 0: normal handle rather than system handle
  478.         bit 2: ??? (set by some EMS managers)
  479.  02h  8 BYTEs    EMS handle's name
  480.  0Ah    WORD    number of 16K pages for handle
  481.  0Ch    DWORD    physical address of page table entries forming page map
  482. Note:    all values should be zero for the system handle if no large frame
  483.       support is present
  484.  
  485. Format of XMS handle info record:
  486. Offset    Size    Description
  487.  00h    WORD    handle
  488.  02h    WORD    flags
  489.         bit 0: handle usable by Windows
  490.             (already in use when Windows started if clear)
  491.         bit 1: reserved (0)
  492.  04h    DWORD    size in KB (may be zero, used only if flags bit 0 set)
  493.  08h    DWORD    physical address (only if flags bit 0 set)
  494.  
  495.  
  496.  
  497.  
  498. ; ***************************************************************************
  499. ; ***************************************************************************
  500. ; ***************************************************************************
  501. ; ***************************************************************************
  502. ; ***************************************************************************
  503. ; ***************************************************************************
  504. ; ***************************************************************************
  505.  
  506.  
  507.  
  508. --------m-214402SF02-------------------------
  509. INT 21 U - Memory Managers - GET MEMORY MANAGER VERSION
  510.     AX = 4402h subfn 02h
  511.     BX = file handle for device "EMMXXXX0"
  512.     CX = 0002h (size of buffer in bytes)
  513.     DS:DX -> buffer for memory manager version (see below)
  514.         first byte must be 02h on entry
  515. Return: CF clear if successful
  516.         buffer filled
  517.     CF set on error
  518.         AX = error code (01h,05h,06h,0Dh) (see AH=59h)
  519. Note:    this function is supported by Microsoft EMM386.EXE v4.45+ and
  520.       CEMM v5.10+, and is intended for use by MS Windows as it starts up
  521. SeeAlso: AX=4402h/SF=00h,AX=4402h"EMM386",INT 67/AH=3Fh
  522.  
  523. Format of memory manager version:
  524. Offset    Size    Description
  525.  00h    BYTE    major version
  526.  01h    BYTE    minor version (binary)
  527.  
  528.  
  529.  
  530.  
  531. --------m-214402-----------------------------
  532. INT 21 U - Microsoft EMM386.EXE v4.45 - GET MEMORY MANAGER INFORMATION
  533.     AX = 4402h
  534.     BX = file handle for device "EMMXXXX0"
  535.     CX = size of buffer in bytes (varies, see below)
  536.     DS:DX -> buffer for returned data (see below)
  537.         first byte must be set on entry to indicate desired data
  538. Return: CF clear if successful
  539.         buffer filled
  540.     CF set on error
  541.         AX = error code (01h,05h,06h,0Dh) (see AH=59h)
  542. Notes:    an error is returned if the number of bytes to be read does not match
  543.       the number of bytes returned for the specified data item
  544.     this function is part of the interface which allows MS Windows to
  545.       cooperate with memory managers
  546. SeeAlso: AX=4402h/SF=00h,AX=4402h/SF=01h,AX=4402h/SF=02h,INT 67/AX=FFA5h
  547.  
  548. Format of data buffer:
  549. Offset    Size    Description
  550.  00h    BYTE    (call) function
  551.         03h get ???
  552.         04h get ???
  553. ---function 03h---
  554.  00h    WORD    ???
  555.  02h    WORD    ???
  556. ---function 04h---
  557.  00h    WORD    segment of UMB containing EMM386 code/data
  558.  02h    WORD    number of paragraphs of EMM386 code/data in UMB
  559.  04h    WORD    ???
  560.